home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 2
/
Merciful - Disc 2.iso
/
software
/
i
/
imagestudiov2.3.0reg.lha
/
Rexx.lha
/
ConvolveTest.isrx
< prev
next >
Wrap
Text File
|
1995-02-24
|
4KB
|
181 lines
/* ImageStudio ARexx script **************************************/
/* Allow commands to return results */
options results
/* On error, goto ERROR:. Comment out this line if you wish to */
/* perform your own error checking. */
signal on error
/* BEGIN PROGRAM *************************************************/
/* See if we have an image already */
IMAGEINFO_GET STEM imageinfo.
if imageinfo.changed == 1 then do
REQUEST_MESSAGE TEXT '"Project has changed, continue?"',
BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
end
else if imageinfo.changed == -1 then do
/* Open a filerequester to get an image to operate on */
REQUEST_FILE TITLE '"Choose image..."' VAR imagefile
OPEN FILE '"'imagefile'"'
/* Get the new image's details */
IMAGEINFO_GET STEM 'imageinfo.'
end
/* Choose the convoluion filters to apply */
PREF_GET NAME 'CONVOLVEDIR' VAR convolvedir
REQUEST_MULTIFILE PATHPART '"'convolvedir'"' TITLE '"Select filters..."',
STEM convolves.
/* Work out how we should tile the image (could do this with a */
/* square root, but we don't have the maths libraries loaded). */
/* This is also not a particularly smart tiling algorithm, but */
/* we're not trying to demonstrate "particularly smart tiling */
/* algorithm"s :-) */
/* Block GUI, selection may take some time */
GUI_BLOCK
num_files = convolves.files.count
select
when convolves.files.count == 1 then
num_tiles = 1
when convolves.files.count <= 4 then
num_tiles = 2
when convolves.files.count <= 9 then
num_tiles = 3
when convolves.files.count <= 16 then
num_tiles = 4
when convolves.files.count <= 25 then
num_tiles = 5
when convolves.files.count <= 36 then
num_tiles = 6
when convolves.files.count <= 49 then
num_tiles = 7
when convolves.files.count <= 64 then
num_tiles = 8
when convolves.files.count <= 81 then
num_tiles = 9
otherwise do
num_tiles = 10
num_files = 100
end
end
GUI_UNBLOCK
/* If the image is colour mapped, change it to 24bit */
if imageinfo.depth ~= 24 then
COLOURS SIXTEENMILLION
/* Loop through all the files */
do l = 0 to num_files - 1
/* Work out region to select */
xtile = l // num_tiles
ytile = l % num_tiles
left = (xtile * imageinfo.width) % num_tiles
right = (((xtile + 1) * imageinfo.width) % num_tiles - 1)
top = (ytile * imageinfo.height) % num_tiles
bottom = (((ytile + 1) * imageinfo.height) % num_tiles - 1)
/* Select the region */
REGION_SET left top TO right bottom
/* Get the name of the filter */
FILE_SPLIT FILE '"'convolves.files.l'"' STEM 'fileinfo.'
/* Apply a filter on that region */
CONVOLVE NAME '"'fileinfo.filepart'"'
end
/* Clear the region */
REGION_CLEAR
/* END PROGRAM ***************************************************/
exit
/* On ERROR */
ERROR:
/* If we get here, either an error occurred with the command's */
/* execution or there was an error with the command itself. */
/* In the former case, rc2 contains the error message and in */
/* the latter, rc2 contains an error number. SIGL contains */
/* the line number of the command which caused the jump */
/* to ERROR: */
if datatype(rc2,'NUMERIC') == 1 then do
/* See if we can describe the error with a string */
select
when rc2 == 103 then
err_string = "ERROR 103, "||,
"out of memory at line "||SIGL
when rc2 == 114 then
err_string = "ERROR 114, "||,
"bad command template at line "||SIGL
when rc2 == 115 then
err_string = "ERROR 115, "||,
"bad number for /N argument at line "||SIGL
when rc2 == 116 then
err_string = "ERROR 116, "||,
"required argument missing at line "||SIGL
when rc2 == 117 then
err_string = "ERROR 117, "||,
"value after keywork missing at line "||SIGL
when rc2 == 118 then
err_string = "ERROR 118, "||,
"wrong number of arguments at line "||SIGL
when rc2 == 119 then
err_string = "ERROR 119, "||,
"unmatched quotes at line "||SIGL
when rc2 == 120 then
err_string = "ERROR 120, "||,
"line too long at line "||SIGL
when rc2 == 236 then
err_string = "ERROR 236, "||,
"unknown command at line "||SIGL
otherwise
err_string = "ERROR "||rc2||", at line "||SIGL
end
end
else if rc2 == 'RC2' then do
err_string = "ERROR in command at line "||SIGL
end
else do
err_string = rc2||", line "||SIGL
end
request_message TEXT '"'err_string'"'
exit